package config

type ServerConfig struct {
	Jwt            Jwt            `json:"jwt"`
	Oss            Oss            `json:"oss"`
	Redis          Redis          `json:"redis"`
	Logger         Logger         `json:"logger"`
	Server         Server         `json:"server"`
	Database       Database       `json:"database"`
	DatabaseLogger DatabaseLogger `json:"database_logger"`
	Wechat         Wechat         `json:"wechat"`
}

type Jwt struct {
	ExpiresAt  int    `json:"expires_at"`
	RefreshAt  int    `json:"refresh_at"`
	SigningKey string `json:"signing_key"`
}

type Oss struct {
	Aliyun Aliyun `json:"aliyun"`
}

type Redis struct {
	Default string `json:"default"`
	Cache   string `json:"cache"`
}

type Logger struct {
	Path   string `json:"path"`
	Level  string `json:"level"`
	Stdout bool   `json:"stdout"`
}

type Server struct {
	LogPath          string `json:"log_path"`
	Address          string `json:"address"`
	DumpRouterMap    bool   `json:"dump_router_map"`
	ErrorLogEnabled  bool   `json:"error_log_enabled"`
	AccessLogEnabled bool   `json:"access_log_enabled"`
}

type Aliyun struct {
	Endpoint        string `json:"endpoint"`
	FileEndpoint    string `json:"file_endpoint"`
	AccessKeyID     string `json:"access_key_id"`
	AccessKeySecret string `json:"access_key_secret"`
	BucketName      string `json:"bucket_name"`
}

type Database struct {
	Host        string `json:"host"`
	Port        string `json:"port"`
	User        string `json:"user"`
	Pass        string `json:"pass"`
	Name        string `json:"name"`
	Type        string `json:"type"`
	Debug       bool   `json:"debug"`
	Prefix      string `json:"prefix"`
	DryRun      bool   `json:"dry_run"`
	Weight      int    `json:"weight"`
	Charset     string `json:"charset"`
	MaxIdle     string `json:"max_idle"`
	MaxOpen     int    `json:"max_open"`
	MaxLifetime int    `json:"max_lifetime"`
}

type DatabaseLogger struct {
	Path   string `json:"path"`
	Level  string `json:"level"`
	Stdout bool   `json:"stdout"`
}

type Wechat struct {
	Token     string `json:"token"`
	Appid     string `json:"appid"`
	Appsecret bool   `json:"appsecret"`
}
